package org.wtframework.platform.server.util;

import java.util.List;

import com.google.common.base.Strings;
import com.google.common.collect.Lists;

/**
 * 
 * <B>版权所有：</B> 佛山市网特计算机软件有限公司 <br/><br/>
 * <B>类描述：</B> （ueditor content 处理公用类） <br/><br/>
 * <B>作者：</B> 黄杰帆 <br/><br/>
 * <B>创建日期：</B> 2014年11月5日 上午11:27:10 
 *
 */
public class StringOperationUtils {

	/**
	 * 
	 * <B>方法描述：</B>（找出中包含目标字符串的路径列表） <br/>
	 *
	 * <B>作者：	 </B> 黄杰帆 <br/>
	 * <B>创建日期：</B> 2014年11月5日 上午11:27:51 
	 * @param targetStr 目标字符串
	 * @param content 需要查找的字符串
	 * @return
	 */
	public static List<String> findAllStr(String targetStr, String content){
		
		List<String> resultList = Lists.newArrayList();
		
		String tempString = targetStr;
		
		
		while (tempString.indexOf(content) != -1) {
			
			Integer index = tempString.indexOf(content);
			
			String	tempStr = tempString.substring(index, tempString.indexOf("\"", index));
			
			resultList.add(tempStr);
			
			tempString = tempString.substring(tempString.indexOf(content)+tempStr.length());
		}
		
		
		return resultList;
	}
	
	
	public static String replaceUrlAtUeditor(String targetUrl, String resultUrl, String content){
		
		Integer index = content.indexOf(targetUrl);
		if(index == -1){
//			System.out.println("in1");
			return content;
		}
			
		if(content.substring(index-1, index).equals("\"")){
			return content.replaceFirst(targetUrl, resultUrl);
		}
		
		String tempStr = content.substring(0, index);
		
		Integer position = tempStr.lastIndexOf("\"");
		String tempResult = content.substring(0, position+1) + content.substring(index, content.length());
		return tempResult.replaceFirst(targetUrl, resultUrl);
	}
	
	
	/**
	 * 
	 * <B>方法描述：</B>（ueditor 过滤上传文件路径(添加)） <br/>
	 *
	 * <B>作者：	 </B> 黄杰帆 <br/>
	 * <B>创建日期：</B> 2014年11月5日 上午10:39:31 
	 * @param targetConent 目标字符串
	 * @param resultFloder 目标文件夹
	 * @return
	 */
	public static String ueditorFilterByAdd(String targetConent, String resultFloder) {
		
		String url = "/files/temporary/";
		String resultContent = targetConent;
		List<String> resultList = findAllStr(resultContent, url);
		for(String fileUrl : resultList){
			String resultUrl = WebFileUtil.copyFile(fileUrl,resultFloder);
			resultContent = replaceUrlAtUeditor(fileUrl, resultUrl, resultContent);
		}
		return resultContent;
	}
	
	/**
	 * 
	 * <B>方法描述：</B>（ueditor 过滤上传文件路径(修改)） <br/>
	 *
	 * <B>作者：	 </B> 黄杰帆 <br/>
	 * <B>创建日期：</B> 2014年11月5日 上午11:06:14 
	 * @param oldContent 数据库中的内容
	 * @param newContent 需要修改的内容 
	 * @param resultFloder 文件目标文件夹
	 * @return
	 */
	public static String ueditorFilterByUpdate(String oldContent, String newContent,String resultFloder) {
		
		String url = "/files/temporary/";
		String resultContent = newContent;
		List<String> resultList = findAllStr(resultContent, url);
		for(String fileUrl : resultList){
			String resultUrl = WebFileUtil.copyFile(fileUrl,resultFloder);
			resultContent = replaceUrlAtUeditor(fileUrl, resultUrl, resultContent);
		}
		
		String oldUrl = "/files/"+resultFloder+"/";
		List<String> oldUrlList = findAllStr(oldContent, oldUrl);
		for(String oldFile : oldUrlList) {
			if(resultContent.indexOf(oldFile) == -1){
				WebFileUtil.deleteFile(oldFile);
			}
		}
		return resultContent;
	}
	
	/**
	 * 
	 * <B>方法描述：</B>（删除ueditor上传的文件和图片） <br/>
	 *
	 * <B>作者：	 </B> 何展操 <br/>
	 * <B>创建日期：</B> 2014年11月28日 下午10:06:42 
	 * @param targetStr
	 * @param resultFloder
	 */
	public static void ueditorFilesDelete(String targetStr, String resultFloder){
		if(!Strings.isNullOrEmpty(targetStr)){
			List<String> filesUrl = StringOperationUtils.findAllStr(targetStr, "/files/" + resultFloder);
			for(String filePath : filesUrl){
				WebFileUtil.deleteFile(filePath);
			}
		}
	}
}
